#pragma once

#ifndef _DROPLET_PROJECTOR
#define _DROPLET_PROJECTOR

#include "DropletDataStructs.h"
#include "DropletSimGlobals.h"
#include "inttypes.h"

#include <EasyBMP.h>

#include <vector>
#include <string>
#include <iostream>

#define SAFE_DELETE(x) { if(x) { delete x; x = NULL; } }

class IDropletProjector
{
protected :
	
	std::string fileDir, fileName, fileFormat;
	int imgHeight, imgWidth;
	bool dataSet;
	BMP *imgData;

public :

	IDropletProjector();
	~IDropletProjector();

	virtual DS_RESULT SetDirectory(std::string dirLocation);
	virtual DS_RESULT LoadFile(std::string fileName);
	virtual DS_RESULT GetPixel(float *xyLoc, uint8_t *rgbaVal);
	virtual DS_RESULT GetPixels(std::vector<float *> *xyLocs, std::vector<uint8_t *> *rgbaVals);
	virtual DS_RESULT GetPixels(float *xyTopLeft, float *xyBottomRight, uint8_t **rgbaVals);
};


#endif